home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 1999 August / SGI Freeware 1999 August.iso / dist / fw_gsl.idb / usr / freeware / include / gsl_integration.h.z / gsl_integration.h
Encoding:
C/C++ Source or Header  |  1999-07-16  |  3.7 KB  |  125 lines

  1. #ifndef GSL_INTEGRATION_H
  2. #define GSL_INTEGRATION_H
  3. #include <stdlib.h>
  4. #include <gsl_math.h>
  5.  
  6. typedef struct {
  7.   size_t limit ;
  8.   double * alist ;
  9.   double * blist ;
  10.   double * rlist ;
  11.   double * elist ;
  12.   size_t * iord ;
  13. } gsl_integration_workspace ;
  14.  
  15. gsl_integration_workspace * 
  16. gsl_integration_workspace_alloc (size_t n) ;
  17.  
  18. void
  19. gsl_integration_workspace_free (gsl_integration_workspace * w) ;
  20.  
  21. typedef void gsl_integration_rule_t (const gsl_function *f, 
  22.                      double a, double b,
  23.                      double * result, double * abserr,
  24.                      double * defabs, double * resabs) ;
  25.        
  26. void gsl_integration_qk15 (const gsl_function *f,
  27.               double a, double b,
  28.               double * result, double * abserr,
  29.               double * resabs, double * resasc) ;
  30.  
  31. void gsl_integration_qk21 (const gsl_function *f,
  32.               double a, double b,
  33.               double * result, double * abserr,
  34.               double * resabs, double * resasc);
  35.  
  36. void gsl_integration_qk31 (const gsl_function *f,
  37.               double a, double b,
  38.               double * result, double * abserr,
  39.               double * resabs, double * resasc);
  40.  
  41. void gsl_integration_qk41 (const gsl_function *f,
  42.               double a, double b,
  43.               double * result, double * abserr,
  44.               double * resabs, double * resasc);
  45.  
  46. void gsl_integration_qk51 (const gsl_function *f,
  47.               double a, double b,
  48.               double * result, double * abserr,
  49.               double * resabs, double * resasc);
  50.  
  51. void gsl_integration_qk61 (const gsl_function *f,
  52.               double a, double b,
  53.               double * result, double * abserr,
  54.               double * resabs, double * resasc);
  55.  
  56. void gsl_integration_qk (const int n,
  57.              const double xgk[], const double wg[], const double wgk[],
  58.              double fv1[], double fv2[],
  59.              const gsl_function *f,
  60.              double a, double b,
  61.              double * result, double * abserr,
  62.              double * resabs, double * resasc) ;
  63.  
  64. int gsl_integration_qng (const gsl_function *f,
  65.              double a, double b,
  66.              double epsabs, double epsrel,
  67.              double * result, double * abserr,
  68.              size_t * neval);
  69.  
  70. int
  71. gsl_integration_qage (const gsl_function *f,
  72.               double a, double b,
  73.               double epsabs, double epsrel,
  74.               int key,
  75.               gsl_integration_workspace * workspace,
  76.               size_t * last,
  77.               double * result, double * abserr, size_t * neval) ;
  78.  
  79. int
  80. gsl_integration_qage_impl (const gsl_function *f,
  81.                double a, double b,
  82.                double epsabs, double epsrel,
  83.                gsl_integration_workspace * workspace,
  84.                size_t * last,
  85.                double * result, double * abserr, size_t * nqeval,
  86.                gsl_integration_rule_t * const q) ;
  87.  
  88. /* The low-level integration rules in QUADPACK are identified by small
  89.    integers (1-6). We'll use symbolic constants to refer to them. 
  90.  
  91.    Don't change the values 1-6, we need those to compute the number of
  92.    function evaluations used by the rule */
  93.  
  94. enum {   
  95.   GSL_INTEG_GAUSS15 = 1,  /* 15 point Gauss-Kronrod rule */
  96.   GSL_INTEG_GAUSS21 = 2,  /* 21 point Gauss-Kronrod rule */
  97.   GSL_INTEG_GAUSS31 = 3,  /* 31 point Gauss-Kronrod rule */
  98.   GSL_INTEG_GAUSS41 = 4,  /* 41 point Gauss-Kronrod rule */
  99.   GSL_INTEG_GAUSS51 = 5,  /* 51 point Gauss-Kronrod rule */
  100.   GSL_INTEG_GAUSS61 = 6   /* 61 point Gauss-Kronrod rule */
  101. } ;
  102.  
  103. void
  104. gsl_integration_qelg (size_t * n, double epstab[], 
  105.               double * result, double * abserr,
  106.               double res3la[], size_t * nres) ;
  107.  
  108. int
  109. gsl_integration_qagse (const gsl_function *f,
  110.               double a, double b,
  111.               double epsabs, double epsrel,
  112.               gsl_integration_workspace * workspace, size_t * last,
  113.               double * result, double * abserr, size_t * neval) ;
  114.  
  115. int
  116. gsl_integration_qagse_impl (const gsl_function *f, 
  117.                 double a, double b, 
  118.                 double epsabs, double epsrel,
  119.                 gsl_integration_workspace * workspace,
  120.                 double * result, double * abserr, 
  121.                 size_t * last, size_t * nqeval,
  122.                 gsl_integration_rule_t * const q) ;
  123.  
  124. #endif /* GSL_INTEGRATION_H */
  125.